package com.promise.jokerdream.model.abyss

/**
 * 深渊映射关系
 * 存储关卡与ID的对应关系
 */
object AbyssMapping {
    
    /**
     * ID到关卡的映射
     */
    private val idToNameMap = mapOf(
        1 to "崎岖斗界",
        2 to "魂渡桥",
        3 to "须臾之河",
        4 to "曲镜空洞",
        5 to "光影迷界",
        6 to "吞厄源头",
        7 to "渊秘祭坛",
        8 to "古帝遗迹"
    )

    /**
     * 根据ID获取关卡名称
     * @param id 关卡ID
     * @return 对应的关卡名称，如果不存在返回null
     */
    fun getNameById(id: Int): String? {
        return idToNameMap[id]
    }

    /**
     * 获取所有ID-名称格式的字符串
     * @return 所有ID-名称格式的字符串列表
     */
    fun getAllIdNameFormats(): List<String> {
        return idToNameMap.entries.map { "${it.key}-${it.value}" }
    }

    /**
     * 根据ID-名称格式字符串获取ID
     * @param idNameFormat ID-名称格式字符串，如"1-崎岖斗界"或"1"
     * @return 对应的关卡ID，如果格式不正确返回null
     */
    fun getIdFromIdNameFormat(idNameFormat: String): Int? {
        val parts = idNameFormat.split("-", limit = 2)
        if (parts.size == 2) {
            // 完整格式：1-崎岖斗界
            return parts[0].toIntOrNull()
        } else if (parts.size == 1) {
            // 只有ID：1
            val id = parts[0].toIntOrNull()
            return id
        }
        return null
    }

    /**
     * 根据ID获取ID-名称格式字符串
     * @param id 关卡ID
     * @return ID-名称格式字符串，如果不存在返回null
     */
    fun getIdNameFormatById(id: Int): String? {
        val name = getNameById(id)
        return if (name != null) "$id-$name" else id.toString()
    }
}
